package com.demo.chapter11future;

import java.util.concurrent.CompletableFuture;

//异常处理
public class Exceptionlly {

	public static Integer calc(Integer para){
		try{
			//模拟一个长时间执行
			Thread.sleep(1000);
		}catch(InterruptedException e){
			e.printStackTrace();
		}
		return para / 0;
	}

	public static void main(String[] args) throws Exception {
		final CompletableFuture<Void> future = CompletableFuture.supplyAsync(() -> calc(50))
			//如果没有异常发生，则返回原有的结果，如果遇到了异常，就可以在exceptionally中处理异常，并返回一个默认值。
			.exceptionally(ex -> {System.out.println(ex.toString());return 0;})
			.thenApply(i -> Integer.toString(i))
			.thenApply(str -> "\"" + str + "\"")
			.thenAccept(System.out::println);
		future.get();
	}

}
